#ifndef QLSTHEMESMANAGER_H
#define QLSTHEMESMANAGER_H

#include <QObject>
#include <QMutex>
#include <QString>
#include <QStringList>

#include "dllQLsThemesManager_global.h"

/* 主题管理系统 */
class DLLQLSTHEMESMANAGER_EXPORT QLsThemesManager : public QObject
{
	Q_OBJECT
public:
	explicit QLsThemesManager(QObject *parent = nullptr);
	QLsThemesManager(QString themesDir, QObject *parent = nullptr);

	/* 刷新本地主题 */
	void RefreshLocalThemes();

	/* 加载主题
	 * 默认主题文件名为 themeName.qss
	 */
	bool LoadTheme(QWidget *widget, const QString &themeName);

	/* 获取可用主题列表 */
	QStringList GetThemes() const;

	/* 获取当前主题 */
	QString GetCurrentTheme() const;

	/* 主题路径 */
	QString themesDir() const;
	void setThemesDir(const QString &themesDir);

	/* 主题配置文件路径 */
	QString themesIniDir() const;

signals:
	/* 样式切换的信号，支持子插件样式跟随主系统切换 */
	void sigChangeTheme(QString);

private:
	QString m_themesDir;					/* 主题路径 */
	QString m_themesIniDir;					/* 主题配置文件路径 */

	QStringList m_themesList;				/* 可用主题列表 */
	QString m_curTheme;						/* 当前主题 */
};

#endif // QLSTHEMESMANAGER_H
